import { reqGoodsInfo, reqAddOrUpdateShopCart } from "@/api";

//封装游客身份模块uuid--生成一个随机字符串（不能在变）
import { getUUID } from "@/utils/uuid_token"


const state = {
    goodInfo: {},
    //游客临时身份
    uuid_token: getUUID()
}

const actions = {
    //获取产品信息的actions
    async getGoodInfo({ commit }, skuId) {
        let result = await reqGoodsInfo(skuId)
        console.log(result);
        if (result.code == 200) {
            commit('GETGOODINFO', result.data)
        }
    },
    //将产品添加到购物车 || 修改某一个产品的个数
    async addOrUpdateShopCart({ commit }, { skuId, skuNum }) {
        //加入购物车返回的解构
        //加入购物车以后（发请求），前台将参数带给服务器
        //服务器写入数据成功，并没有返回其他数据，只是返回了code = 200，表示成功了
        //因为服务器没有返回其他数据，因此不用三连环存储数据
        let result = await reqAddOrUpdateShopCart(skuId, skuNum)
        console.log(result);
        //注意：async函数执行返回的结果是一个promise（用了async  await）
        //判断是否请求成功
        if (result.code == 200) {
            //返回的是成功的标记
            return 'ok'
        } else {
            //返回的是失败的标记
            return Promise.reject(new Error('faile'))
        }
    }
};
const mutations = {
    GETGOODINFO(state, value) {
        state.goodInfo = value
    }
};
//简化仓库数据
const getters = {
    categoryView(state) {
        //比如：state.goodInfo初始化状态空对象，空对象的categoryView属性值为undefin
        //当前计算出的categoryView属性值至少是一个空对象，就不会有假报错
        return state.goodInfo.categoryView || {}
    },
    skuInfo(state) {
        return state.goodInfo.skuInfo || {}
    },
    spuSaleAttrList(state) {
        return state.goodInfo.spuSaleAttrList || []
    }
};

export default {
    actions,
    mutations,
    getters,
    state
}
